package com.les.ufcg.gerenciador.elementos;


import java.util.Calendar;
import java.util.GregorianCalendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;

import com.les.ufcg.gerenciador.R;
import com.les.ufcg.gerenciador.db.DBAdapter;
import com.les.ufcg.gerenciador.contact_module.ContactsActivity;
import com.les.ufcg.gerenciador.foto_module.CamaraView;

public class AdicionarEmprestimo extends Activity implements View.OnClickListener, AdapterView.OnItemSelectedListener {
	
	private TextView dataSelecionadaAtualmente;
	private int mAno, mMes, mDia;
	
	private RadioButton dequem_eu;
	private RadioButton dequem_amigo;
	private RadioButton paraquem_eu;
	private RadioButton paraquem_amigo;
	
	private Button seleciona_amigo_button;
	private Button seleciona_data_button;
	private Button take_a_picture;
	private ImageView photo_visualizacao;
	private TextView amigo_selecionado;
	
	private Spinner spinner_categoria;
	private String categoria_selecionada = "CD";
	private EditText descricao;
	ArrayAdapter<CharSequence> adapter;
	
	static final int DATE_DIALOG_ID = 0;
	
	private DBAdapter database;
	
	public void onCreate(Bundle b) {
		super.onCreate(b);
		setContentView(R.layout.adicionar_emprestimo_lay);
		
		dequem_eu = (RadioButton) findViewById(R.id.dequem_eu);
		dequem_amigo = (RadioButton) findViewById(R.id.dequem_amigo);
		
		paraquem_eu = (RadioButton) findViewById(R.id.paraquem_eu);
		paraquem_amigo = (RadioButton) findViewById(R.id.paraquem_amigo);
		
		dequem_eu.setOnClickListener(this);
		paraquem_eu.setOnClickListener(this);
		dequem_amigo.setOnClickListener(this);
		paraquem_amigo.setOnClickListener(this);
		
		
		dataSelecionadaAtualmente = (TextView) findViewById(R.id.seleciona_data_textview);
		
		seleciona_amigo_button = (Button) findViewById(R.id.seleciona_amigo_button);
		seleciona_amigo_button.setOnClickListener(this);
				
		seleciona_data_button = (Button) findViewById(R.id.seleciona_data_button);
		seleciona_data_button.setOnClickListener(this);
		
		//Item
		spinner_categoria = (Spinner) findViewById(R.id.categoria_emprestimo);
		spinner_categoria.setOnItemSelectedListener(this);
		
		take_a_picture = (Button) findViewById(R.id.take_picture);
		take_a_picture.setOnClickListener(this);
		
		photo_visualizacao = null;
		descricao = (EditText) findViewById(R.id.descricao_edittext);
		
		amigo_selecionado = (TextView) findViewById(R.id.amigo_selecionado);
		database = DBAdapter.getContext();
		
		carregaSpinnerCategorias();
		pegaDataAtual();
		updateDisplay();
	}

	private void carregaSpinnerCategorias() {
		 	adapter = ArrayAdapter.createFromResource(
		            this, R.array.categorias_array, android.R.layout.simple_spinner_item);
		    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		    spinner_categoria.setAdapter(adapter);
	}

	@Override
	public void onClick(View v) {
		
		if (v == dequem_amigo) {
			paraquem_eu.setChecked(true);
		} else if (v == dequem_eu){
			paraquem_amigo.setChecked(true);
		} else if (v == paraquem_amigo) {
			dequem_eu.setChecked(true);
		} else if (v == paraquem_eu) {
			dequem_amigo.setChecked(true);
		} else if (v == seleciona_amigo_button) {
			startActivity(new Intent(getApplication(), ContactsActivity.class));
		} else if (v == seleciona_data_button) {
			showDialog(DATE_DIALOG_ID);
		} else if (v == take_a_picture) {
			startActivity(new Intent(getApplication(), CamaraView.class));
		}
	}
	
	
	public void onResume() {
		super.onResume();
		photo_visualizacao = (ImageView) findViewById(R.id.photo_visualizacao);
		photo_visualizacao.setImageBitmap(CamaraView.getBMP());
	}
	
	/**
	 * Pega a data atual
	 */
	private void pegaDataAtual() {
	    final Calendar c = Calendar.getInstance();
	    mAno = c.get(Calendar.YEAR);
	    mMes = c.get(Calendar.MONTH);
	    mDia = c.get(Calendar.DAY_OF_MONTH);
	}
	
	//Date Picker Dialog Methods
	/**
	 * Update TextView for show selected date
	 */
	private void updateDisplay() {
		String data = "Data selecionada : ";
		dataSelecionadaAtualmente.setText(
	            new StringBuilder()
	                    // Month is 0 based so add 1
	            		.append(data).append(" ")
	            		.append(mDia).append("-")        
	            		.append(mMes + 1).append("-")
	                    .append(mAno).append(" "));
		
		String value = "";
		Bundle extras = getIntent().getExtras();
		if(extras !=null) {
			value = extras.getString("Nome do contato");
		}
		
		String amigo = "Amigo selecionado: ";
		amigo_selecionado.setText(  
				new StringBuilder()
				.append(amigo).append(" ")
				.append(value));
	}
	
	
    private DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year, 
                                      int monthOfYear, int dayOfMonth) {
                    mAno = year;
                    mMes = monthOfYear;
                    mDia = dayOfMonth;
                    updateDisplay();
                }
            };
            
     
    @Override
    protected Dialog onCreateDialog(int id) {
           switch (id) {
            	 case DATE_DIALOG_ID:
            	 		return new DatePickerDialog(this,
            	 					mDateSetListener,
            	 					mAno, mMes, mDia);
            	 }
            return null;
    }

    
    //Metodos chamados pela spinner de categorias
	@Override
	public void onItemSelected(AdapterView<?> parent, View arg1, int arg2,
			long arg3) {
		this.categoria_selecionada = parent.getItemAtPosition(arg2).toString();
		System.out.println(this.categoria_selecionada);
	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub
		
	}
	
	
	/**
	 * Adiciona um novo emprestimo
	 * @param v
	 */
	public void adicionaNovoEmprestimoOnClick(View v) {
		 Emprestimo e;
		
		if (dequem_eu.isChecked()) {
			e = new Emprestimo("Eu", amigo_selecionado.getText().toString(), descricao.getText().toString(), this.categoria_selecionada, Calendar.getInstance(), new GregorianCalendar(mAno, mMes, mDia), true, CamaraView.getBMP());
		} else {
			e = new Emprestimo(amigo_selecionado.getText().toString(), "Eu", descricao.getText().toString(), this.categoria_selecionada, Calendar.getInstance(), new GregorianCalendar(mAno, mMes, mDia), true, CamaraView.getBMP());
		}
		
		database.open();
		database.insereEmprestimo(e);
		database.close();
		
		finish();
	}
	
	
	
	
	
}
